home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Tele / Internet / NewsWatch Folder / headers / TCPPB.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-03  |  5.1 KB  |  251 lines  |  [TEXT/MPS ]

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-89
  6.     All rights reserved
  7.     
  8. */
  9.  
  10. #ifndef _TCPPB_
  11. #define _TCPPB_
  12.  
  13. /* Command codes */
  14.  
  15. #define TCPCreate            30
  16. #define    TCPPassiveOpen        31
  17. #define TCPActiveOpen        32
  18. #define TCPSend                34
  19. #define TCPNoCopyRcv        35
  20. #define TCPRcvBfrReturn        36
  21. #define TCPRcv                37
  22. #define TCPClose            38
  23. #define TCPAbort            39
  24. #define TCPStatus            40
  25. #define TCPExtendedStat        41
  26. #define TCPRelease            42
  27. #define TCPGlobalInfo        43
  28. #define TCPCtlMax            49
  29.  
  30. typedef enum TCPEventCode {
  31.     TCPClosing = 1,
  32.     TCPULPTimeout,
  33.     TCPTerminate,
  34.     TCPDataArrival,
  35.     TCPUrgent,
  36.     TCPICMPReceived,
  37.     lastEvent = 65535
  38. };
  39.  
  40. typedef enum TCPTerminationReason {
  41.     TCPRemoteAbort = 2,
  42.     TCPNetworkFailure,
  43.     TCPSecPrecMismatch,
  44.     TCPULPTimeoutTerminate,
  45.     TCPULPAbort,
  46.     TCPULPClose,
  47.     TCPServiceError,
  48.     lastReason = 65535
  49. }; 
  50.  
  51. #ifdef THINK_C
  52. typedef void *TCPNotifyProc;
  53. #else
  54. typedef pascal void (*TCPNotifyProc) (
  55.         StreamPtr tcpStream,
  56.         unsigned short eventCode,
  57.         Ptr userDataPtr,
  58.         unsigned short terminReason,
  59.         struct ICMPReport *icmpMsg);
  60. #endif
  61.  
  62. typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
  63.  
  64. typedef unsigned short tcp_port;
  65.  
  66. typedef unsigned char byte;
  67.  
  68. enum {                    /* ValidityFlags */
  69.     timeoutValue = 0x80,
  70.     timeoutAction = 0x40,
  71.     typeOfService = 0x20,
  72.     precedence = 0x10
  73. };
  74.  
  75. enum {                    /* TOSFlags */
  76.     lowDelay = 0x01,
  77.     throughPut = 0x02,
  78.     reliability = 0x04
  79. };
  80.  
  81. typedef struct TCPCreatePB {
  82.     Ptr         rcvBuff;
  83.     unsigned long rcvBuffLen;
  84.     TCPNotifyProc     notifyProc;
  85.     Ptr         userDataPtr;
  86. }TCPCreatePB;
  87.  
  88. typedef struct TCPOpenPB {
  89.     byte ulpTimeoutValue;
  90.     byte ulpTimeoutAction;
  91.     byte validityFlags;
  92.     byte commandTimeoutValue;
  93.     ip_addr remoteHost;
  94.     tcp_port remotePort;
  95.     ip_addr localHost;
  96.     tcp_port localPort;
  97.     byte tosFlags;
  98.     byte precedence;
  99.     Boolean dontFrag;
  100.     byte timeToLive;
  101.     byte security;
  102.     byte optionCnt;
  103.     byte options[40];
  104.     Ptr userDataPtr;
  105. }TCPOpenPB;
  106.     
  107. typedef struct TCPSendPB {
  108.     byte ulpTimeoutValue;
  109.     byte ulpTimeoutAction;
  110.     byte validityFlags;
  111.     Boolean pushFlag;
  112.     Boolean urgentFlag;
  113.     Ptr wdsPtr;
  114.     unsigned long sendFree;
  115.     unsigned short sendLength;
  116.     Ptr userDataPtr;
  117. }TCPSendPB;
  118.     
  119.  
  120. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  121.     byte commandTimeoutValue;
  122.     byte filler;
  123.     Boolean markFlag;
  124.     Boolean urgentFlag;
  125.     Ptr rcvBuff;
  126.     unsigned short rcvBuffLen;
  127.     Ptr rdsPtr;
  128.     unsigned short rdsLength;
  129.     unsigned short secondTimeStamp;
  130.     Ptr userDataPtr;
  131. }TCPReceivePB;
  132.     
  133. typedef struct TCPClosePB {
  134.     byte ulpTimeoutValue;
  135.     byte ulpTimeoutAction;
  136.     byte validityFlags;
  137.     Ptr userDataPtr;
  138. }TCPClosePB;
  139.     
  140. typedef struct HistoBucket {
  141.     unsigned short value;
  142.     unsigned long counter;
  143. };
  144.     
  145. #define NumOfHistoBuckets    7
  146.  
  147. typedef struct TCPConnectionStats {
  148.     unsigned long dataPktsRcvd;
  149.     unsigned long dataPktsSent;
  150.     unsigned long dataPktsResent;
  151.     unsigned long bytesRcvd;
  152.     unsigned long bytesRcvdDup;
  153.     unsigned long bytesRcvdPastWindow;
  154.     unsigned long  bytesSent;
  155.     unsigned long bytesResent;
  156.     unsigned short numHistoBuckets;
  157.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  158.     unsigned short lastRTT;
  159.     unsigned short tmrSRTT;
  160.     unsigned short rttVariance;
  161.     unsigned short tmrRTO;
  162.     byte sendTries;
  163.     byte sourchQuenchRcvd;
  164. }TCPConnectionStats;
  165.     
  166. typedef struct TCPStatusPB {
  167.     byte ulpTimeoutValue;
  168.     byte ulpTimeoutAction;
  169.     long unused;
  170.     ip_addr remoteHost;
  171.     tcp_port remotePort;
  172.     ip_addr localHost;
  173.     tcp_port localPort;
  174.     byte tosFlags;
  175.     byte precedence;
  176.     byte connectionState;
  177.     unsigned short sendWindow;
  178.     unsigned short rcvWindow;
  179.     unsigned short amtUnackedData;
  180.     unsigned short amtUnreadData;
  181.     Ptr securityLevelPtr;
  182.         /* HEMS-HEMP stats */
  183.     unsigned long sendUnacked;
  184.     unsigned long sendNext;
  185.     unsigned long congestionWindow;
  186.     unsigned long rcvNext;
  187.     unsigned long srtt;
  188.     unsigned long lastRTT;
  189.     unsigned long sendMaxSegSize;
  190.     struct TCPConnectionStats *connStatPtr;
  191.     Ptr userDataPtr;
  192. }TCPStatusPB;
  193.     
  194. typedef struct TCPAbortPB {
  195.     Ptr userDataPtr;
  196. }TCPAbortPB;
  197.     
  198. typedef struct TCPParam {
  199.     unsigned long tcpRtoA;
  200.     unsigned long tcpRtoMin;
  201.     unsigned long tcpRtoMax;
  202.     unsigned long tcpMaxSegSize;
  203.     unsigned long tcpMaxConn;
  204.     unsigned long tcpMaxWindow;
  205. }TCPParam;
  206.  
  207. typedef struct TCPStats {
  208.     unsigned long tcpConnAttempts;
  209.     unsigned long tcpConnOpened;
  210.     unsigned long tcpConnAccepted;
  211.     unsigned long tcpConnClosed;
  212.     unsigned long tcpConnAborted;
  213.     unsigned long tcpOctetsIn;
  214.     unsigned long tcpOctetsOut;
  215.     unsigned long tcpOctetsInDup;
  216.     unsigned long tcpOctetsRetrans;
  217.     unsigned long tcpInputPkts;
  218.     unsigned long tcpOutputPkts;
  219.     unsigned long tcpDupPkts;
  220.     unsigned long tcpRetransPkts;
  221. }TCPStats;
  222.     
  223. typedef struct TCPGlobalInfoPB {
  224.     struct TCPParam *tcpParamPtr;
  225.     struct TCPStats *tcpStatsPtr;
  226.     unsigned long *tcpCDBTable;
  227.     Ptr userDataPtr;
  228. }TCPGlobalInfoPB;
  229.     
  230. typedef struct TCPiopb {
  231.     char                 fill12[12];
  232.     TCPIOCompletionProc    ioCompletion;
  233.     short                 ioResult;
  234.     char                 *ioNamePtr;        
  235.     short                 ioVRefNum;        
  236.     short                ioCRefNum;            
  237.     short                 csCode;
  238.     StreamPtr             tcpStream;                
  239.     union {
  240.         struct TCPCreatePB create;
  241.         struct TCPOpenPB open;
  242.         struct TCPSendPB send;
  243.         struct TCPReceivePB receive;
  244.         struct TCPClosePB close;
  245.         struct TCPAbortPB abort;
  246.         struct TCPStatusPB status;
  247.         struct TCPGlobalInfoPB globalInfo;
  248.         } csParam;
  249. }TCPiopb;
  250.     
  251. #endif _TCPPB_